<?php

require_once 'AbstractModel.php';

class FournisseurBDD extends AbstractModel
{
	// Préparation des requêtes
	
	var $_truncate;
	var $_insert;
	var $_update_idFournisseur;
	var $_update_enseigne;
	var $_update_raison_sociale;
	var $_update_site_web;
	var $_update_adresse;
	var $_update_complement_adresse;
	var $_update_code_postal;
	var $_update_commune;
	var $_update_interlocuteur1;
	var $_update_email_interlocuteur1;
	var $_update_fonction_interlocuteur1;
	var $_update_tel_fixe_interlocuteur1;
	var $_update_tel_mobile_interlocuteur1;
	var $_update_interlocuteur2;
	var $_update_email_interlocuteur2;
	var $_update_fonction_interlocuteur2;
	var $_update_tel_fixe_interlocuteur2;
	var $_update_tel_mobile_interlocuteur2;
	var $_update_perimetre_intervention;
	var $_update_date_inscription;
	var $_update_commentaire;
	var $_update_type_reglement;
	var $_update_delais_reglement;
	var $_update_remise;
	var $_update_specificite_remise;
	var $_update_mode_paiement;
	var $_selectAll;
	var $_selectFournisseurNames;
	var $_delete;
	
    public function __construct()
    {
        parent::__construct('FOURNISSEURS');
		// Connexion à la base de données
		$this->_truncate = $this->_db->prepare('TRUNCATE FOURNISSEURS');
		$this->_insert = $this->_db->prepare('INSERT INTO FOURNISSEURS (enseigne, raison_sociale, site_web, adresse, complement_adresse, code_postal, commune, interlocuteur1, email_interlocuteur1, fonction_interlocuteur1, tel_fixe_interlocuteur1, tel_mobile_interlocuteur1, interlocuteur2, email_interlocuteur2, fonction_interlocuteur2, tel_fixe_interlocuteur2, tel_mobile_interlocuteur2, perimetre_intervention, date_inscription, commentaire, type_reglement, delais_reglement, remise, specificite_remise, mode_paiement) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);');
				
		$this->_update_idFournisseur= $this->_db->prepare('UPDATE FOURNISSEURS SET idFournisseur = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_enseigne = $this->_db->prepare('UPDATE FOURNISSEURS SET enseigne = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_raison_sociale = $this->_db->prepare('UPDATE FOURNISSEURS SET raison_sociale = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_site_web = $this->_db->prepare('UPDATE FOURNISSEURS SET site_web = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_adresse = $this->_db->prepare('UPDATE FOURNISSEURS SET adresse = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_complement_adresse = $this->_db->prepare('UPDATE FOURNISSEURS SET complement_adresse = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_code_postal = $this->_db->prepare('UPDATE FOURNISSEURS SET code_postal = :value WHERE idFournisseur=:idFournisseur;'); 
		$this->_update_commune = $this->_db->prepare('UPDATE FOURNISSEURS SET commune = :value WHERE idFournisseur=:idFournisseur;'); 
		$this->_update_interlocuteur1 = $this->_db->prepare('UPDATE FOURNISSEURS SET interlocuteur1 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_email_interlocuteur1 = $this->_db->prepare('UPDATE FOURNISSEURS SET email_interlocuteur1 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_fonction_interlocuteur1 = $this->_db->prepare('UPDATE FOURNISSEURS SET fonction_interlocuteur1 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_tel_fixe_interlocuteur1 = $this->_db->prepare('UPDATE FOURNISSEURS SET tel_fixe_interlocuteur1 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_tel_mobile_interlocuteur1 = $this->_db->prepare('UPDATE FOURNISSEURS SET tel_mobile_interlocuteur1 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_interlocuteur2 = $this->_db->prepare('UPDATE FOURNISSEURS SET interlocuteur2 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_email_interlocuteur2 = $this->_db->prepare('UPDATE FOURNISSEURS SET email_interlocuteur2 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_fonction_interlocuteur2 = $this->_db->prepare('UPDATE FOURNISSEURS SET fonction_interlocuteur2 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_tel_fixe_interlocuteur2 = $this->_db->prepare('UPDATE FOURNISSEURS SET tel_fixe_interlocuteur2 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_tel_mobile_interlocuteur2 = $this->_db->prepare('UPDATE FOURNISSEURS SET tel_mobile_interlocuteur2 = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_perimetre_intervention = $this->_db->prepare('UPDATE FOURNISSEURS SET perimetre_intervention = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_date_inscription = $this->_db->prepare('UPDATE FOURNISSEURS SET date_inscription = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_commentaire = $this->_db->prepare('UPDATE FOURNISSEURS SET commentaire = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_type_reglement = $this->_db->prepare('UPDATE FOURNISSEURS SET type_reglement = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_delais_reglement = $this->_db->prepare('UPDATE FOURNISSEURS SET delais_reglement = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_remise = $this->_db->prepare('UPDATE FOURNISSEURS SET remise = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_specificite_remise = $this->_db->prepare('UPDATE FOURNISSEURS SET specificite_remise = :value WHERE idFournisseur=:idFournisseur;');
		$this->_update_mode_paiement = $this->_db->prepare('UPDATE FOURNISSEURS SET mode_paiement = :value WHERE idFournisseur=:idFournisseur;');
		
		$this->_selectAll = $this->_db->prepare('SELECT * FROM FOURNISSEURS');
		$this->_selectAll->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		$this->_selectFournisseurNames = $this->_db->prepare('SELECT idFournisseur, nom_FOURNISSEURS FROM FOURNISSEURS');
		$this->_selectFournisseurNames->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		
		$this->_delete = $this->_db->prepare('DELETE FROM FOURNISSEURS WHERE idFournisseur=?;');
    }
	
	public function insert($enseigne, $raison_sociale, $site_web, $adresse, $complement_adresse, $code_postal, $commune, $interlocuteur1, $email_interlocuteur1, $fonction_interlocuteur1, $tel_fixe_interlocuteur1, $tel_mobile_interlocuteur1, $interlocuteur2, $email_interlocuteur2, $fonction_interlocuteur2, $tel_fixe_interlocuteur2, $tel_mobile_interlocuteur2, $perimetre_intervention, $date_inscription, $commentaire, $type_reglement, $delais_reglement, $remise, $specificite_remise, $mode_paiement)
{
	// On sécurise les entrées
 $enseigne = strip_tags($enseigne);
 $raison_sociale = strip_tags($raison_sociale);
 $site_web = strip_tags($site_web);
 $adresse = strip_tags($adresse);
 $complement_adresse = strip_tags($complement_adresse);
 $code_postal = strip_tags($code_postal);
 $commune = strip_tags($commune);
 $interlocuteur1 = strip_tags($interlocuteur1);
 $email_interlocuteur1 = strip_tags($email_interlocuteur1);
 $fonction_interlocuteur1 = strip_tags($fonction_interlocuteur1);
 $tel_fixe_interlocuteur1 = strip_tags($tel_fixe_interlocuteur1);
 $tel_mobile_interlocuteur1 = strip_tags($tel_mobile_interlocuteur1);
 $interlocuteur2 = strip_tags($interlocuteur2);
 $email_interlocuteur2 = strip_tags($email_interlocuteur2);
 $fonction_interlocuteur2 = strip_tags($fonction_interlocuteur2);
 $tel_fixe_interlocuteur2 = strip_tags($tel_fixe_interlocuteur2);
 $tel_mobile_interlocuteur2 = strip_tags($tel_mobile_interlocuteur2);
 $perimetre_intervention = strip_tags($perimetre_intervention);
 $date_inscription = strip_tags($date_inscription);
 $commentaire = strip_tags($commentaire);
 $type_reglement = strip_tags($type_reglement);
 $delais_reglement = strip_tags($delais_reglement);
 $remise = strip_tags($remise);
 $specificite_remise = strip_tags($specificite_remise);
 $mode_paiement = strip_tags($mode_paiement);

	try{
			if ( $this->_insert->execute(array($enseigne, $raison_sociale, $site_web, $adresse, $complement_adresse, $code_postal, $commune, $interlocuteur1, $email_interlocuteur1, $fonction_interlocuteur1, $tel_fixe_interlocuteur1, $tel_mobile_interlocuteur1, $interlocuteur2, $email_interlocuteur2, $fonction_interlocuteur2, $tel_fixe_interlocuteur2, $tel_mobile_interlocuteur2, $perimetre_intervention, $date_inscription, $commentaire, $type_reglement, $delais_reglement, $remise, $specificite_remise, $mode_paiement)) )
			{
				echo "SUCCESS : Le nouveau fournisseur à été créé";
			}else{
				echo "FAILURE : Lae nouveau fournisseur n'a PAS pu être créé : ";
			}
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public function update($idFournisseur, $attribute, $value)
	{
		// Sécurisation des données en entrée
		$idFournisseur = strip_tags($idFournisseur);
		$value = strip_tags($value);
		try{
			if ( $attribute == 'enseigne'){
				$this->_update_enseigne->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_enseigne->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_enseigne->execute();
			}elseif ( $attribute == 'raison_sociale'){
				$this->_update_raison_sociale->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_raison_sociale->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_raison_sociale->execute();
			}elseif ( $attribute == 'site_web'){
				$this->_update_site_web->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_site_web->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_site_web->execute();
			}elseif ( $attribute == 'adresse'){
				$this->_update_adresse->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_adresse->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_adresse->execute();
			}elseif ( $attribute == 'complement_adresse'){
				$this->_update_complement_adresse->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_complement_adresse->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_complement_adresse->execute();
			}elseif ( $attribute == 'code_postal'){
				$this->_update_code_postal->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_code_postal->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_code_postal->execute();
			}elseif ( $attribute == 'commune'){
				$this->_update_commune->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_commune->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_commune->execute();
			}elseif ( $attribute == 'interlocuteur1'){
				$this->_update_interlocuteur1->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_interlocuteur1->execute();
			}elseif ( $attribute == 'email_interlocuteur1'){
				$this->_update_email_interlocuteur1->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_email_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_email_interlocuteur1->execute();
			}elseif ( $attribute == 'fonction_interlocuteur1'){
				$this->_update_fonction_interlocuteur1->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_fonction_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_fonction_interlocuteur1->execute();
			}elseif ( $attribute == 'tel_fixe_interlocuteur1'){
				$this->_update_tel_fixe_interlocuteur1->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_tel_fixe_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_tel_fixe_interlocuteur1->execute();
			}elseif ( $attribute == 'tel_mobile_interlocuteur1'){
				$this->_update_tel_mobile_interlocuteur1->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_tel_mobile_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_tel_mobile_interlocuteur1->execute();
			}elseif ( $attribute == 'interlocuteur2'){
				$this->_update_interlocuteur2->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_interlocuteur2->execute();
			}elseif ( $attribute == 'email_interlocuteur2'){
				$this->_update_email_interlocuteur2->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_email_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_email_interlocuteur2->execute();
			}elseif ( $attribute == 'fonction_interlocuteur2'){
				$this->_update_fonction_interlocuteur2->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_fonction_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_fonction_interlocuteur2->execute();
			}elseif ( $attribute == 'tel_fixe_interlocuteur2'){
				$this->_update_tel_fixe_interlocuteur2->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_tel_fixe_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_tel_fixe_interlocuteur2->execute();
			}elseif ( $attribute == 'tel_mobile_interlocuteur2'){
				$this->_update_tel_mobile_interlocuteur2->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_tel_mobile_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_tel_mobile_interlocuteur2->execute();
			}elseif ( $attribute == 'perimetre_intervention'){
				$this->_update_perimetre_intervention->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_perimetre_intervention->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_perimetre_intervention->execute();
			}elseif ( $attribute == 'date_inscription'){
				$this->_update_date_inscription->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_date_inscription->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_date_inscription->execute();
			}elseif ( $attribute == 'commentaire'){
				$this->_update_commentaire->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_commentaire->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_commentaire->execute();
			}elseif ( $attribute == 'type_reglement'){
				$this->_update_type_reglement->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_type_reglement->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_type_reglement->execute();
			}elseif ( $attribute == 'delais_reglement'){
				$this->_update_delais_reglement->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_delais_reglement->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_delais_reglement->execute();
			}elseif ( $attribute == 'remise'){
				$this->_update_remise->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_remise->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_remise->execute();
			}elseif ( $attribute == 'specificite_remise'){
				$this->_update_specificite_remise->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_specificite_remise->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_specificite_remise->execute();
			}elseif ( $attribute == 'mode_paiement'){
				$this->_update_mode_paiement->bindParam(':idFournisseur', $idFournisseur, PDO::PARAM_INT);
				$this->_update_mode_paiement->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_mode_paiement->execute();
			}
			echo "La création du fournisseur à été effectuée avec succés :)";
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public  function fetchAllFournisseur()
	{
		$this->_selectAll->execute();
		return $listeFournisseur = $this->_selectAll->fetchAll();
	}
	
	public  function fetchFournisseurNames()
	{
		$this->_selectFournisseurNames->execute();
		return $listeFournisseur = $this->_selectNames->fetchAll();
	}
	
	public  function delete($idFournisseur)
	{
		$this->_delete->execute(array($idFournisseur));
	}
}